package com.bckj.fastboot.core.extra.retry;

import com.bckj.fastboot.core.jackson.JsonUtils;
import lombok.Data;

import java.util.List;

@Data
public class RetryContext {
    private int retryCount;
    private String bizId;
    private String exceptionMsg;    // 异常信息
    private long nextRetryTime;      // 下次重试时间（可选）
    private int maxRetryCount = 3;
    /**
     * 初始重试时间 默认5s
     */
    private long initialInterval = 5000;
    /**
     * 乘数，用于计算下次重试时间
     */
    private int multiplier;
    private String className;
    private String methodName;
    private List<String> args;
    private List<String> argTypes;

    // 序列化为JSON（用于消息体）
    public String toJson() {
        return JsonUtils.toJsonStr(this);
    }

    public static RetryContext fromJson(String json) {
        return JsonUtils.toBean(json, RetryContext.class);
    }
}
